package com.zhengbing.tj.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhengbing.tj.entity.AuditLog;
import java.util.List;
import java.time.LocalDateTime;

/**
 * 审计日志服务接口
 * 提供审计日志的记录、查询等功能
 *
 * @author zhengbing
 * @date 2024-08-22
 */
public interface AuditLogService extends IService<AuditLog> {

    /**
     * 记录审计日志
     * @param log 审计日志对象
     * @return 是否记录成功
     */
    boolean recordAuditLog(AuditLog log);

    /**
     * 批量记录审计日志
     * @param logs 审计日志列表
     * @return 是否记录成功
     */
    boolean batchRecordAuditLogs(List<AuditLog> logs);

    /**
     * 根据操作人ID查询审计日志
     * @param operatorId 操作人ID
     * @return 审计日志列表
     */
    List<AuditLog> getLogsByOperatorId(Long operatorId);

    /**
     * 根据实体名称和ID查询审计日志
     * @param entityName 实体名称
     * @param entityId 实体ID
     * @return 审计日志列表
     */
    List<AuditLog> getLogsByEntity(String entityName, Long entityId);

    /**
     * 根据时间范围查询审计日志
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 审计日志列表
     */
    List<AuditLog> getLogsByTimeRange(LocalDateTime startTime, LocalDateTime endTime);    

    /**
     * 根据操作类型查询审计日志
     * @param operationType 操作类型
     * @return 审计日志列表
     */
    List<AuditLog> getLogsByOperationType(String operationType);
}